package com.yufubao.framework.util;

import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.StpUtil;
import com.yufubao.framework.enums.CommonExceptionEnum;
import com.yufubao.framework.exception.BaseException;
import com.yufubao.framework.interceptor.local.LoginUserLoc;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.Objects;
import java.util.Optional;

/**
 * @author 张一恒
 * @version 1.0
 * @description: 安全工具类
 * @date 2024/9/4 16:44
 */
@Slf4j
@Component
public class SecurityUtils {


    /**
     * 校验当前线程人员是否为admin
     *
     * @return
     */
    public static Boolean isAdmin(Long managerId) {
        return managerId != null && 1L == managerId;
    }

//    /**
//     * 后台管理端校验本地线程人员信息
//     *
//     * @param managerLoc
//     * @return
//     */
//    public static ManagerLoginVo checkManagerLoc(ThreadLocal<ManagerLoginVo> managerLoc) {
//        ManagerLoginVo loc = Optional.ofNullable(managerLoc.get()).orElse(new ManagerLoginVo());
//        if (Objects.isNull(loc.getManagerId())) {
//            log.error(CommonExceptionEnum.NOAUTH.getMsg());
//            throw new BaseException(CommonExceptionEnum.NOAUTH);
//        }
//
//        return loc;
//    }


    /**
     * 小程序端校验本地线程用户信息
     *
     * @param loginUserLoc
     * @return
     */
    public static LoginUserLoc checkUserLoc(ThreadLocal<LoginUserLoc> loginUserLoc) {
        LoginUserLoc loc = Optional.ofNullable(loginUserLoc.get()).orElse(new LoginUserLoc());
        if (Objects.isNull(loc.getUserId())) {
            log.error(CommonExceptionEnum.NOAUTH.getMsg());
            throw new BaseException(CommonExceptionEnum.NOAUTH);
        }
        return loc;
    }


}
